<?php
/**
* Quản lý đăng nhập
*/
class Auth_loginController extends Zend_Controller_Action {

    public function indexAction(){
		System_Template::using('login','Admin');
       
        if($this->_request->isPost()){
            //1. Gọi kết nối database
			$db = Zend_Registry::get('connectDB');
			//$db = Zend_Db::factory($dbOption['adapter'],$dbOption['params']);
			
			//2. Khởi tạo Zend_Auth
			$auth = Zend_Auth::getInstance ();
			
			//3. Khai báo bảng và 2 cột sẽ sử dụng so sánh trong quá trình xác thực
			$authAdapter = new Zend_Auth_Adapter_DbTable ( $db );
			$authAdapter->setTableName('user')
						->setIdentityColumn('EMAIL')
						->setCredentialColumn('PASSWORD');

			//4. Lấy giá trị được submit từ form
			$email = $this->_request->getParam ( 'email' );

			$password = $this->_request->getParam ( 'password' );
			
			//5. Dựa vào so sánh với dữ liệu khai báo ở mục 3
			$authAdapter->setIdentity ( $email );
			$authAdapter->setCredential ( md5 ( $password ) );
            
			//6. Kiểm tra trạng thái của user nếu status = 1 mới được đăng nhập thành công
			$select = $authAdapter->getDbSelect();
			$select->join(array('role' => 'role'),
                                    'user.ROLEID = role.ROLEID',
                                     array('NAVIGATION','NAME')
                                    )
                   ->where('user.STATUS = 1');
				
			//7. Lấy kết quả truy vấn
			$result = $auth->authenticate ( $authAdapter );
            
			$flag = false;
			$affff = $result->isValid();
			if($result->isValid()){
                //8. Lấy những dữ liệu cần thiết trong bảng user nếu login thành công
                $data = $authAdapter->getResultRowObject (null,array('password'));
                //9. Lưu những dữ liệu của member vào session
                $auth->getStorage()->write ( $data );
                $flag = true;				
			}
			if($flag == true){
               $navigation = $auth->getIdentity()->NAVIGATION;
               $this->_redirect($navigation);
               
			}
		}
	}
    
    public function accessdeniedAction()
    {
        $this->_helper->layout->disableLayout();
    }
    
	public function logoutAction() {
		$auth = Zend_Auth::getInstance(); 
		$auth->clearIdentity();		
	}
}